/*
 * @Author: WuFeng <763467339@qq.com>
 * @Date: 2022-03-22 12:12:49
 * @LastEditTime: 2023-04-06 17:13:03
 * @LastEditors: WuFeng <763467339@qq.com>
 * @Description: 校验工具类
 * @FilePath: \vue3-element-plus-web\src\utils\validate.js
 * @Copyright 版权声明
 */
/* 用户名 校验*/
export function isvalidUsername(str) {
  // const valid_map = ['admin', 'editor']
  // return valid_map.indexOf(str.trim()) >= 0
  if (str.length === 0) {
    return 0
  } else {
    return 1
  }
}

/**
 * @description 密码 校验
 * 密码应包含小写字母、数字、及特殊符号，长度不少于7位 ： /^(?=.*\d)(?=.*[a-z])(?=.*[@$!%*?&#_+\-])(?!.*[\u4e00-\u9fa5])[a-zA-Z0-9\W_]{6,}$/
 * 密码6-16位，必须包含：首字母大写、英文字母、特殊字符、数字 ： /^[A-Z](?=.*?[0-9])(?=.*?[_!@#$%^&*+-.~])[A-Za-z0-9_!@#$%^&*+-.~]{5,15}$/
 * @param {*} textval
 * @param {*} type
 * @returns
 */
export function validatePssword(str, type = '') {
  const reg = /^[A-Z](?=.*?[0-9])(?=.*?[_!@#$%^&*+-.~])[A-Za-z0-9_!@#$%^&*+-.~]{5,15}$/
  return type === 'get' ? reg : reg.test(str)
}

/* 合法uri*/
export function validateURL(textval, type = '') {
  const urlregex =
    /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return type === 'get' ? urlregex : urlregex.test(textval)
}

/* 小写字母*/
export function validateLowerCase(str, type = '') {
  const reg = /^[a-z]+$/
  return type === 'get' ? reg : reg.test(str)
}

/* 大写字母*/
export function validateUpperCase(str, type = '') {
  const reg = /^[A-Z]+$/
  return type === 'get' ? reg : reg.test(str)
}

/* 大小写字母*/
export function validateAlphabets(str, type = '') {
  const reg = /^[A-Za-z]+$/
  return type === 'get' ? reg : reg.test(str)
}

/* 数字和26个英文字母组成的字符串 */
export function validateAlphabetsNumber(str, type = '') {
  const reg = /^[A-Za-z0-9]+$/
  return type === 'get' ? reg : reg.test(str)
}

/* 数字和26个英文字母且字母打头组成的字符串 */
export function validateVariableName(str, type = '') {
  const reg = /^[a-zA-z]+[A-Za-z0-9]*$/
  return type === 'get' ? reg : reg.test(str)
}

/* 整数 */
export function validateInteger(str, type = '') {
  const reg = /^-?\d+$/
  return type === 'get' ? reg : reg.test(str)
}

/* 正整数 */
export function validatePosInteger(str, type = '') {
  const reg = /^^[+]{0,1}(\d+)$/
  return type === 'get' ? reg : reg.test(str)
}

/* 汉字 */
export function validateChinese(str, type = '') {
  const reg = /^[\u4e00-\u9fa5],{0,}$/
  return type === 'get' ? reg : reg.test(str)
}

/* 身份证号码 */
export function validateIdCard(str, type = '') {
  const reg = /^\d{15}|\d{}18$/
  return type === 'get' ? reg : reg.test(str)
}

/* 邮箱 */
export function validateEmail(str, type = '') {
  const reg =
    /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/
  return type === 'get' ? reg : reg.test(str)
}

/* 手机号 */
export function validateTelephone(str, type = '') {
  const reg =
    /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/
  return type === 'get' ? reg : reg.test(str)
}

/* 邮编 */
export function validateZipCode(str, type = '') {
  const reg = /^[0-9]{6}$/
  return type === 'get' ? reg : reg.test(str)
}

/* 传真/座机 */
export function validateFax(str, type = '') {
  const reg = /^(\d{3,4}-)?\d{7,8}$/
  return type === 'get' ? reg : reg.test(str)
}

/*
 * @description 价格
 *价格符合两种格式

    ^[1-9]\d*(.\d{1,2})?$ ： 1-9开头，后跟是0-9，可以跟小数点，但小数点后要带上1-2位小数，类似2,2.0,2.1,2.22等
    ^0(.\d{1,2})?$ ： 0开头，后可以跟小数点，小数点后要待上1-2位小数，类似0,0.22,0.1等
    ---------------------
    版权声明：本文为CSDN博主「zgljl2012」的原创文章，遵循CC 4.0 by-sa版权协议，转载请附上原文出处链接及本声明。
    原文链接：https://blog.csdn.net/zgljl2012/article/details/51052322
 */
export function validatePrice(str, type = '') {
  // const reg = /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/
  const reg = /(^[1-9]\d{0,9}(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/
  return type === 'get' ? reg : reg.test(str)
}

//正整数
export function positiveInteger(str, type = '') {
  // const reg = /^[1-9]\d*$/
  const reg = /^[1-9]\d{0,9}$/
  return type === 'get' ? reg : reg.test(str)
}

/* 自定义正则校验 */
export function validateRegexp(reg = '', str) {
  return reg.test(str)
}

/**
 * 判断是否为空
 */
export function validatenull(val) {
  if (typeof val === 'boolean') {
    return false
  }
  if (val instanceof Array) {
    if (val.length === 0) return true
  } else if (val instanceof Object) {
    if (JSON.stringify(val) === '{}') return true
  } else {
    if (val === 'null' || val === null || val === 'undefined' || val === undefined || val === '') return true
    return false
  }
  return false
}
